μ΄λ²€νΈ μμ±μ΄ λΆλ³νκ³ ν¬λͺ νλ©° ν¬κ΄μ μΈ κ°μ¬ μΆμ μ μ 곡νμ¬ κ·μ μ€μ λ° μ μΈκ³ λΉμ¦λμ€ ν΅μ°°λ ₯μ μΌλ§λ μ€μνμ§ μμ보μΈμ. ꡬν μ λ΅μ λν μ¬μΈ΅μ μΈ λΆμ.
κ°λ ₯ν κ°μ¬ μΆμ μ μν μ΄λ²€νΈ μμ±: κΈλ‘λ² μμ€ν μ λ°μ λͺ¨λ λ³κ²½ μ¬ν 곡κ°
μ€λλ μ μνΈ μ°κ²°λκ³ κ·μ κ° μ¬ν λμ§νΈ νκ²½μμ μμ€ν λ΄μ λͺ¨λ λ³κ²½ μ¬νμ μ ννκ² μΆμ , νμΈ λ° μ¬κ΅¬μ±νλ λ₯λ ₯μ λ¨μν λͺ¨λ² μ¬λ‘κ° μλλΌ κΈ°λ³Έμ μΈ μꡬ μ¬νμ λλ€. κ΅μ κ΅κ²½μ λλλλ κΈμ΅ κ±°λμμλΆν° λ€μν κ°μΈ μ 보 보νΈλ²μ λ°λΌ κ΄λ¦¬λλ κ°μΈ λ°μ΄ν°μ μ΄λ₯΄κΈ°κΉμ§ κ°λ ₯ν κ°μ¬ μΆμ μ μ λ’°, μ± μ λ° κ·μ μ€μμ κΈ°λ°μ λλ€. μ’ μ’ μ¬νμ ꡬνλλ κΈ°μ‘΄ κ°μ¬ λ©μ»€λμ¦μ λΆμμ ν κΈ°λ‘, μ±λ₯ λ³λͺ© νμ λλ λ λμ κ²½μ°μλ 무결μ±μ μμμν€λ λ³κ²½ κ°λ₯ν κΈ°λ‘μΌλ‘ μ΄μ΄μ§λ κ²½μ°κ° λ§μ΅λλ€.
μ΄ ν¬κ΄μ μΈ κ°μ΄λλ κ°λ ₯ν μν€ν μ² ν¨ν΄μΈ μ΄λ²€νΈ μμ±μ΄ μ°μν κ°μ¬ μΆμ ꡬμΆμ μν λΉκ΅ν μ μλ κΈ°λ°μ μ 곡νλ λ°©λ²μ μμΈν μ€λͺ ν©λλ€. μμ€ν μ΄ λ³κ²½ μ¬νμ κΈ°λ‘ν λΏλ§ μλλΌ λͺ¨λ μμ μ λν λΆλ³νκ³ κ²μ¦ κ°λ₯νλ©° μν©μ λ§λ νλΆν κΈ°λ‘μ μ 곡νλλ‘ ν΅μ¬ μμΉ, μ€μ©μ μΈ κ΅¬ν μ λ΅ λ° κΈλ‘λ² λ°°ν¬μ λν μ€μν κ³ λ € μ¬νμ μ΄ν΄λ³΄κ² μ΅λλ€.
νλμ λ§₯λ½μμ κ°μ¬ μΆμ μ΄ν΄
μ΄λ²€νΈ μμ±μ μ΄ν΄λ³΄κΈ° μ μ νΉν κ΅μ 기ꡬμ κ²½μ° κ°μ¬ μΆμ μ΄ κ·Έ μ΄λ λλ³΄λ€ μ€μν μ΄μ λ₯Ό μμλ΄ μλ€.
- κ·μ μ€μ: μ λ½μ μΌλ° λ°μ΄ν° λ³΄νΈ κ·μ (GDPR), λ―Έκ΅μ κ±΄κ° λ³΄ν μλ λ° μ± μμ κ΄ν λ²(HIPAA), Sarbanes-Oxley Act(SOX), λΈλΌμ§μ Lei Geral de ProteΓ§Γ£o de Dados(LGPD) λ° μλ§μ μ§μ κΈμ΅ κ·μ μ κΌΌκΌΌν κΈ°λ‘ μ μ§λ₯Ό μꡬν©λλ€. μ μΈκ³μ μΌλ‘ μ΄μλλ μ‘°μ§μ 볡μ‘ν κ·μ μ€μ μꡬ μ¬νμ μ€μν΄μΌ νλ©°, μ’ μ’ λκ°, μΈμ , μ΄λ€ λ°μ΄ν°λ‘ 무μμ νλμ§μ λν μμΈν λ‘κ·Έκ° νμν©λλ€.
- ν¬λ μ λΆμ λ° λ¬Έμ ν΄κ²°: μμ€ν λ²κ·Έ, λ°μ΄ν° μΉ¨ν΄ λλ μλͺ»λ νΈλμμ λ± μ¬κ±΄μ΄ λ°μνλ©΄ λ¬Έμ λ‘ μ΄μ΄μ§ μΌλ ¨μ μ¬κ±΄μ μ΄ν΄νλ λ° μμΈν κ°μ¬ μΆμ μ΄ λ§€μ° μ€μν©λλ€. μ΄λ₯Ό ν΅ν΄ μμ§λμ΄, 보μ ν λ° λΉμ¦λμ€ λΆμκ°λ κ³Όκ±°λ₯Ό μ¬κ΅¬μ±νκ³ κ·Όλ³Έ μμΈμ μ νν νμ νλ©° μ μνκ² μμ μ‘°μΉλ₯Ό ꡬνν μ μμ΅λλ€.
- λΉμ¦λμ€ μΈν 리μ μ€ λ° μ¬μ©μ νλ λΆμ: κ·μ μ€μ λ° λ¬Έμ ν΄κ²° μΈμλ κ°μ¬ μΆμ μ μ¬μ©μ νλ, μμ€ν μ¬μ© ν¨ν΄ λ° λΉμ¦λμ€ μν°ν°μ μλͺ μ£ΌκΈ°λ₯Ό μ΄ν΄νκΈ° μν νλΆν λ°μ΄ν° μμ€λ₯Ό μ 곡ν©λλ€. μ΄λ μ ν κ°λ°μ μ 보λ₯Ό μ 곡νκ³ , νλ‘μΈμ€ κ°μ μμμ μλ³νκ³ , μ λ΅μ μμ¬ κ²°μ μ μΆμ§ν μ μμ΅λλ€.
- 보μ λͺ¨λν°λ§ λ° μ¬κ³ λμ: κ°μ¬ λ‘κ·Έλ μμ¬μ€λ¬μ΄ νλ, λ¬΄λ¨ μ‘μΈμ€ μλ λλ μ μ¬μ μΈ λ΄λΆμ μνμ νμ§νκΈ° μν μ£Όμ μμ€μ λλ€. κ°μ¬ λ°μ΄ν°μ μ€μκ° λΆμμ κ²½κ³ λ₯Ό νΈλ¦¬κ±°νκ³ μ κ΅ν μ¬μ΄λ² μν μλμ μ€μν μ¬μ μλ°©μ 보μ μ‘°μΉλ₯Ό νμ±νν μ μμ΅λλ€.
- μ± μ λ° λΆμΈ λ°©μ§: λ§μ λΉμ¦λμ€ νκ²½μμ νΉμ κ°μΈ λλ μμ€ν κ΅¬μ± μμκ° μ‘°μΉλ₯Ό μ·¨νμΌλ©° μ΄λ₯Ό μ λΉνκ² λΆμΈν μ μλ€λ κ²μ μ¦λͺ νλ κ²μ΄ νμμ μ λλ€. μ λ’°ν μ μλ κ°μ¬ μΆμ μ μ΄λ¬ν μ¦κ±°λ₯Ό μ 곡ν©λλ€.
κΈ°μ‘΄ κ°μ¬ λ‘κΉ μ λ¬Έμ μ
μ€μμ±μλ λΆκ΅¬νκ³ κΈ°μ‘΄μ κ°μ¬ λ‘κΉ λ°©μμ μ’ μ’ μλΉν μ΄λ €μμ μ겨μ€λλ€.
- κ΄μ¬μ¬ λΆλ¦¬: μ’ μ’ κ°μ¬ λ‘μ§μ΄ κΈ°μ‘΄ μ ν리μΌμ΄μ μ½λμ λ³ΌνΈλ‘ μ°κ²°λμ΄ μ± μμ΄ μ½νκ² λ©λλ€. κ°λ°μλ λ€μν μμ μμ μμ μ κΈ°λ‘νλ κ²μ κΈ°μ΅ν΄μΌ νλ―λ‘ λλ½μ΄λ λΆμΌμΉκ° λ°μν κ°λ₯μ±μ΄ μμ΅λλ€.
- λ°μ΄ν° λ³κ²½ κ°λ₯μ± λ° λ³μ‘° μν: κ°μ¬ λ‘κ·Έκ° νμ€ λ³κ²½ κ°λ₯ν λ°μ΄ν°λ² μ΄μ€μ μ μ₯λ κ²½μ° μ°λ°μ μ΄λ μ μμ μ΄λ λ³μ‘° μνμ΄ μμ΅λλ€. μμ λ λ‘κ·Έλ μ λ’°μ±κ³Ό μ¦κ±° κ°μΉλ₯Ό μμ΅λλ€.
- μΈλΆμ± λ° μ»¨ν μ€νΈ λ¬Έμ : κΈ°μ‘΄ λ‘κ·Έλ λ무 μμΈνκ±°λ(λͺ¨λ μ¬μν κΈ°μ μΈλΆ μ 보 λ‘κΉ ) λ무 ν¬μ(μ€μν λΉμ¦λμ€ μ»¨ν μ€νΈ λλ½)νμ¬ μλ―Έ μλ ν΅μ°°λ ₯μ μΆμΆνκ±°λ νΉμ λΉμ¦λμ€ μλ리μ€λ₯Ό μ¬κ΅¬μ±νλ λ° μ΄λ €μμ κ²ͺμ μ μμ΅λλ€.
- μ±λ₯ μ€λ²ν€λ: λ³λμ κ°μ¬ ν μ΄λΈμ΄λ λ‘κ·Έ νμΌμ μ°λ κ²μ νΉν μ²λ¦¬λμ΄ λ§μ μμ€ν μμ μ±λ₯ μ€λ²ν€λλ₯Ό λ°μμμΌ μ¬μ©μ κ²½νμ μ μ¬μ μΌλ‘ μν₯μ λ―ΈμΉ μ μμ΅λλ€.
- λ°μ΄ν° μ μ₯ λ° μΏΌλ¦¬ 볡μ‘μ±: λ°©λν μμ κ°μ¬ λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκ³ μΏΌλ¦¬νλ κ²μ 볡μ‘ν μ μμΌλ©° νΉμ μΈλ±μ±, λ³΄κ΄ μ λ΅ λ° μ κ΅ν 쿼리 λκ΅¬κ° νμν©λλ€.
μ΄κ²μ΄ μ΄λ²€νΈ μμ±μ΄ ν¨λ¬λ€μ μ νμ μ 곡νλ μ΄μ μ λλ€.
μ΄λ²€νΈ μμ±μ ν΅μ¬ μμΉ
μ΄λ²€νΈ μμ±μ μ ν리μΌμ΄μ μνμ λν λͺ¨λ λ³κ²½ μ¬νμ΄ λΆλ³ μ΄λ²€νΈ μνμ€λ‘ μ μ₯λλ μν€ν μ² ν¨ν΄μ λλ€. μν°ν°μ νμ¬ μνλ₯Ό μ μ₯νλ λμ ν΄λΉ μνλ‘ μ΄μ΄μ§ μΌλ ¨μ μ΄λ²€νΈλ₯Ό μ μ₯ν©λλ€. μν κ³μ’μ κ°λ€κ³ μκ°νμμμ€. νμ¬ μμ‘λ§ μ μ₯νλ κ²μ΄ μλλΌ λ°μν λͺ¨λ μ κΈ λ° μΆκΈ κΈ°λ‘μ μ μ₯ν©λλ€.
μ£Όμ κ°λ :
- μ΄λ²€νΈ: μ΄κ²μ κ³Όκ±°μ λ°μν μΌμ λνλ΄λ λΆλ³μ μ¬μ€μ
λλ€. μ΄λ²€νΈλ κ³Όκ±° μμ λ‘ λͺ
λͺ
λ©λλ€(μ:
OrderPlaced,CustomerAddressUpdated,PaymentFailed). μ€μν μ μ μ΄λ²€νΈλ λͺ λ Ήμ΄ μλλΌ μ΄λ―Έ λ°μν μΌμ λν κΈ°λ‘μ λλ€. μΌλ°μ μΌλ‘ μ 체 μμ€ν μ νμ¬ μνκ° μλλΌ μ΄λ²€νΈ μ체μ λν λ°μ΄ν°λ₯Ό ν¬ν¨ν©λλ€. - μ§κ³: μ΄λ²€νΈ μμ±μμ μ§κ³λ λ°μ΄ν° λ³κ²½μ μν΄ λ¨μΌ λ¨μλ‘ μ²λ¦¬λλ λλ©μΈ κ°μ²΄ ν΄λ¬μ€ν°μ λλ€. μμ€ν μ λΆλ³μ±μ 보νΈν©λλ€. μ§κ³λ λͺ λ Ήμ λ°κ³ , μ ν¨μ±μ κ²μ¬νκ³ , μ±κ³΅νλ©΄ νλ μ΄μμ μ΄λ²€νΈλ₯Ό λ΄λ³΄λ λλ€. μλ₯Ό λ€μ΄ "Order" μ§κ³λ "PlaceOrder" λͺ λ Ήμ μ²λ¦¬νκ³ "OrderPlaced" μ΄λ²€νΈλ₯Ό λ΄λ³΄λΌ μ μμ΅λλ€.
- μ΄λ²€νΈ μ μ₯μ: μ΄κ²μ λͺ¨λ μ΄λ²€νΈκ° μ μ§λλ λ°μ΄ν°λ² μ΄μ€μ λλ€. νμ¬ μνλ₯Ό μ μ₯νλ κΈ°μ‘΄ λ°μ΄ν°λ² μ΄μ€μ λ¬λ¦¬ μ΄λ²€νΈ μ μ₯μλ μΆκ° μ μ© λ‘κ·Έμ λλ€. μ΄λ²€νΈλ μ°λμμΌλ‘ μμ°¨μ μΌλ‘ μμ±λμ΄ λΆλ³μ±μ μ μ§ν©λλ€. λ리 μ¬μ©λλ μ ν μ¬νμΌλ‘λ EventStoreDBμ κ°μ νΉμ μ΄λ²€νΈ μ μ₯μ λλ JSONB μ΄μ΄ μλ PostgreSQLκ³Ό κ°μ λ²μ© λ°μ΄ν°λ² μ΄μ€, λλ λ‘κ·Έ μ€μ¬ νΉμ±μ κ°μ§ Kafkaκ° μμ΅λλ€.
- νλ‘μ μ /μ½κΈ° λͺ¨λΈ: μ΄λ²€νΈ μ μ₯μμλ μ΄λ²€νΈλ§ ν¬ν¨λμ΄ μμΌλ―λ‘ λ§€λ² λͺ¨λ μ΄λ²€νΈλ₯Ό λ€μ μ¬μνμ¬ νμ¬ μν λλ 쿼리λ₯Ό μν νΉμ 보기λ₯Ό μ¬κ΅¬μ±νλ κ²μ λ²κ±°λ‘μΈ μ μμ΅λλ€. λ°λΌμ μ΄λ²€νΈ μμ±μ μ’ μ’ CQRS(Command Query Responsibility Segregation)μ μμ μ΄λ£Ήλλ€. νλ‘μ μ (μ½κΈ° λͺ¨λΈμ΄λΌκ³ λ ν¨)μ μ΄λ²€νΈ μ€νΈλ¦Όμ ꡬλ νμ¬ κ΅¬μΆλ λ³λμ 쿼리 μ΅μ νλ λ°μ΄ν°λ² μ΄μ€μ λλ€. μ΄λ²€νΈκ° λ°μνλ©΄ νλ‘μ μ μ ν΄λΉ 보기λ₯Ό μ λ°μ΄νΈν©λλ€. μλ₯Ό λ€μ΄ "OrderSummary" νλ‘μ μ μ κ° μ£Όλ¬Έμ λν νμ¬ μνμ μ΄μ‘μ μ μ§ν μ μμ΅λλ€.
μ΄λ²€νΈ μμ±μ μ₯μ μ μ΄λ²€νΈ λ‘κ·Έ μμ²΄κ° λ¨μΌ μμ€ μ§μ€μ΄ λλ€λ κ²μ λλ€. μ£Όμ΄μ§ μ§κ³μ λν λͺ¨λ μ΄λ²€νΈλ₯Ό λ€μ μ¬μνμ¬ νμ¬ μνλ₯Ό νμ λμΆν μ μμ΅λλ€. μ΄ κ³ μ ν λ‘κΉ λ©μ»€λμ¦μ μ νν κ°μ¬ μΆμ μ λ§€μ° κ°λ ₯ν μ΄μ μ λλ€.
κΆκ·Ήμ μΈ κ°μ¬ μΆμ μΌλ‘μμ μ΄λ²€νΈ μμ±
μ΄λ²€νΈ μμ±μ μ±ννλ©΄ λ³Έμ§μ μΌλ‘ κ°λ ₯νκ³ ν¬κ΄μ μ΄λ©° λ³μ‘° λ°©μ§ κ°μ¬ μΆμ μ μ»μ μ μμ΅λλ€. μ΄μ λ λ€μκ³Ό κ°μ΅λλ€.
μ€κ³μ μν λΆλ³μ±
κ°μ¬λ₯Ό μν κ°μ₯ μ€μν μ₯μ μ μ΄λ²€νΈμ λΆλ³μ±μ λλ€. μ΄λ²€νΈκ° μ΄λ²€νΈ μ μ₯μμ κΈ°λ‘λλ©΄ λ³κ²½νκ±°λ μμ ν μ μμ΅λλ€. κ·Έκ²μ μΌμ΄λ μΌμ λν λ³κ²½ν μ μλ μ¬μ€μ λλ€. μ΄ μμ±μ μ λ’°μ κ·μ μ€μμ κ°μ₯ μ€μν©λλ€. λ°μ΄ν° 무결μ±μ΄ λμμμ΄ μλ¬Έμ μ κΈ°λ°λ μΈμμμ μΆκ° μ μ© μ΄λ²€νΈ λ‘κ·Έλ μμ¬μ κΈ°λ‘μ΄ λ³μ‘° λ°©μ§λλ€λ μνΈν μμ€μ 보μ¦μ μ 곡ν©λλ€. μ΄λ μ΄ λ‘κ·Έμμ νμλ λͺ¨λ κ°μ¬ μΆμ μ΄ λ§μ κ·μ νλ μμν¬μ ν΅μ¬ μꡬ μ¬νμ μΆ©μ‘±νλ λμΌν μμ€μ 무결μ±μ κ°λλ€λ κ²μ μλ―Έν©λλ€.
μΈλΆμ μ΄κ³ μν©μ λ§λ νλΆν λ°μ΄ν°
κ° μ΄λ²€νΈλ νΉμ νκ³ μλ―Έ μλ λΉμ¦λμ€ λ³κ²½ μ¬νμ μΊ‘μ²ν©λλ€. λ¨μν "κΈ°λ‘ μ
λ°μ΄νΈλ¨"μ΄λΌκ³ λ§ λͺ
μνλ μΌλ° λ‘κ·Έ νλͺ©κ³Ό λ¬λ¦¬ CustomerAddressUpdatedμ κ°μ μ΄λ²€νΈ(customerId, oldAddress, newAddress, changedByUserId λ° timestamp νλ ν¬ν¨)λ μ ννκ³ μΈλΆμ μΈ μ»¨ν
μ€νΈλ₯Ό μ 곡ν©λλ€. μ΄ νλΆν λ°μ΄ν°λ κ°μ¬ λͺ©μ μΌλ‘ λ§€μ° μ€μνλ©° μ‘°μ¬κ΄μ 무μΈκ°κ° λ³κ²½λμλ€λ κ²λΏλ§ μλλΌ λ¬΄μμ΄, 무μμμ 무μμΌλ‘, λκ°, μΈμ λ³κ²½λμλμ§ μ νν μ΄ν΄ν μ μμ΅λλ€. μ΄ μμ€μ μΈλΆ μ 보λ κΈ°μ‘΄ λ‘κΉ
μ΄ μ 곡νλ κ²λ³΄λ€ ν¨μ¬ λ°μ΄λ ν¬λ μ λΆμμ ν¨μ¬ λ ν¨κ³Όμ μΌλ‘ λ§λλλ€.
λ€μκ³Ό κ°μ μλ₯Ό κ³ λ €νμμμ€.
UserRegistered { "userId": "uuid-123", "email": "user@example.com", "registrationTimestamp": "2023-10-27T10:00:00Z", "ipAddress": "192.168.1.10", "referrer": "social-media" }OrderQuantityUpdated { "orderId": "uuid-456", "productId": "prod-A", "oldQuantity": 2, "newQuantity": 3, "changedByUserId": "uuid-789", "changeTimestamp": "2023-10-27T10:15:30Z", "reason": "customer_request" }
κ° μ΄λ²€νΈλ κ³Όκ±° νλμ λν μμ νκ³ λ 립μ μΈ μ€ν 리μ λλ€.
μ°λμ
μ΄λ²€νΈλ λ³Έμ§μ μΌλ‘ μ§κ³ μ€νΈλ¦Ό λ΄μμ κ·Έλ¦¬κ³ μ 체 μμ€ν μμ μ μμ μΌλ‘ μ°λμμΌλ‘ μ μ₯λ©λλ€. μ΄λ λ°μν λͺ¨λ μμ μ λν μ νν μκ° μμ μνμ€λ₯Ό μ 곡ν©λλ€. μ΄ μμ°μ€λ¬μ΄ μμλ μ΄λ²€νΈμ μΈκ³Ό κ΄κ³λ₯Ό μ΄ν΄νκ³ νΉμ μμ μ μμ€ν μνλ₯Ό μ ννκ² μ¬κ΅¬μ±νλ λ° κΈ°λ³Έμ λλ€. μ΄λ μμ μμκ° μ€ν¨λ₯Ό μ΄ν΄νλ λ° μ€μν 볡μ‘ν λΆμ° μμ€ν μ λλ²κΉ νλ λ° νΉν μ μ©ν©λλ€.
μ 체 κΈ°λ‘ μ¬κ΅¬μ±
μ΄λ²€νΈ μμ±μ μ¬μ©νλ©΄ κ³Όκ±° νΉμ μμ μ μ§κ³(λλ μ 체 μμ€ν )μ μνλ₯Ό λ€μ λΉλνλ κΈ°λ₯μ΄ κΈ°λ³Έμ λλ€. νΉμ νμμ€ν¬νκΉμ§ μ΄λ²€νΈλ₯Ό λ€μ μ¬μνλ©΄ λ§ κ·Έλλ‘ "μ΄μ , μ§λ λ¬ λλ μλ μ μμ€ν μνλ₯Ό λ³Ό μ μμ΅λλ€." μ΄λ κ·μ μ€μ κ°μ¬μ μ μ©ν κ°λ ₯ν κΈ°λ₯μΌλ‘, κ°μ¬μλ κ³Όκ±° λ³΄κ³ μλ μνλ₯Ό μ΅μ’ μ μΈ κΈ°λ‘κ³Ό λμ‘°νμ¬ νμΈν μ μμ΅λλ€. λν μλ‘μ΄ λΉμ¦λμ€ κ·μΉμΌλ‘ κ³Όκ±° λ°μ΄ν°λ₯Ό A/B ν μ€νΈνκ±°λ μ΄λ²€νΈλ₯Ό λ€μ ν¬μνμ¬ λ°μ΄ν° μμμ μμ νκΈ° μν΄ μ΄λ²€νΈλ₯Ό λ€μ μ¬μνλ λ± κ³ κΈ λΉμ¦λμ€ λΆμμ κ°λ₯νκ² ν©λλ€. μ΄ κΈ°λ₯μ κΈ°μ‘΄ μν κΈ°λ° μμ€ν μμλ μ΄λ ΅κ³ μ’ μ’ λΆκ°λ₯ν©λλ€.
λΉμ¦λμ€ λ‘μ§κ³Ό κ°μ¬ λ¬Έμ μ λΆλ¦¬
μ΄λ²€νΈ μμ±μμ κ°μ¬ λ°μ΄ν°λ μΆκ° κΈ°λ₯μ΄ μλλΌ μ΄λ²€νΈ μ€νΈλ¦Ό μ체μ κ³ μ ν λΆλΆμ λλ€. λͺ¨λ λΉμ¦λμ€ λ³κ²½ μ¬νμ μ΄λ²€νΈμ΄κ³ λͺ¨λ μ΄λ²€νΈλ κ°μ¬ μΆμ μ μΌλΆμ λλ€. μ¦, κ°λ°μλ κ°μ¬ μ 보λ₯Ό κΈ°λ‘νκΈ° μν΄ λ³λμ μ½λλ₯Ό μμ±ν νμκ° μμ΅λλ€. λΉμ¦λμ€ μμ (μ: κ³ κ° μ£Όμ μ λ°μ΄νΈ)μ μννλ©΄ μμ°μ€λ½κ² μ΄λ²€νΈκ° κΈ°λ‘λμ΄ κ°μ¬ λ‘κ·Έ νλͺ©μΌλ‘ μ¬μ©λ©λλ€. μ΄λ₯Ό ν΅ν΄ κ°λ°μ΄ κ°μνλκ³ λλ½λ κ°μ¬ νλͺ©μ κ°λ₯μ±μ΄ μ€μ΄λ€λ©° λΉμ¦λμ€ λ‘μ§κ³Ό κΈ°λ‘ κ°μ μΌκ΄μ±μ΄ 보μ₯λ©λλ€.
μ΄λ²€νΈ μμ± κ°μ¬ μΆμ μ μν μ€μ©μ μΈ κ΅¬ν μ λ΅
κ°μ¬ μΆμ μ μ΄λ²€νΈ μμ±μ ν¨κ³Όμ μΌλ‘ νμ©νλ €λ©΄ μ μ€ν μ€κ³ λ° κ΅¬νμ΄ νμν©λλ€. μ€μ©μ μΈ μ λ΅μ μ΄ν΄λ³΄κ² μ΅λλ€.
κ°μ¬ κ°λ₯μ±μ μν μ΄λ²€νΈ μ€κ³
κ°μ¬ μΆμ μ νμ§μ μ΄λ²€νΈ μ€κ³μ λ¬λ € μμ΅λλ€. μ΄λ²€νΈλ μν©μ νλΆνκ³ "λ¬΄μ¨ μΌμ΄ μΌμ΄λ¬λμ§", "μΈμ ", "λκ°", "μ΄λ€ λ°μ΄ν°λ‘"λ₯Ό μ΄ν΄νλ λ° νμν λͺ¨λ μ 보λ₯Ό ν¬ν¨ν΄μΌ ν©λλ€. κ°μ¬ λͺ©μ μΌλ‘ λλΆλΆμ μ΄λ²€νΈμ ν¬ν¨ν μ£Όμ μμλ λ€μκ³Ό κ°μ΅λλ€.
- μ΄λ²€νΈ μ ν: λͺ
νν κ³Όκ±° μμ μ΄λ¦(μ:
CustomerCreatedEvent,ProductPriceUpdatedEvent). - μ§κ³ ID: κ΄λ ¨λ μν°ν°μ κ³ μ μλ³μ(μ:
customerId,orderId). - νμμ€ν¬ν: νΉν κΈλ‘λ² μ΄μμ κ²½μ° μκ°λ λͺ¨νΈμ±μ νΌνκΈ° μν΄ νμ νμμ€ν¬νλ₯Ό UTC(Coordinated Universal Time)λ‘ μ μ₯ν©λλ€. μ΄λ κ² νλ©΄ μΌκ΄λ μμ μ§μ κ³Ό λμ€μ νμλ₯Ό μν νμ§νκ° κ°λ₯ν©λλ€.
- μ¬μ©μ ID/κ°μμ: μ΄λ²€νΈλ₯Ό νΈλ¦¬κ±°ν μ¬μ©μ λλ μμ€ν
νλ‘μΈμ€μ ID(μ:
triggeredByUserId,systemProcessId). μ΄λ μ± μμ μ€μν©λλ€. - μμ€ IP μ£Όμ/μμ² ID: μμ²μ΄ μμλ IP μ£Όμ λλ (λ§μ΄ν¬λ‘μλΉμ€μμ μΆμ νκΈ° μν) κ³ μ ν μμ² IDλ₯Ό ν¬ν¨νλ©΄ 보μ λΆμ λ° λΆμ° μΆμ μ λ§€μ° μ μ©ν μ μμ΅λλ€.
- μκ΄ κ΄κ³ ID: μ¬λ¬ μλΉμ€μμ λ¨μΌ λ Όλ¦¬μ νΈλμμ λλ μ¬μ©μ μΈμ κ³Ό κ΄λ ¨λ λͺ¨λ μ΄λ²€νΈ λ° μμ μ ν¨κ» μ°κ²°νλ κ³ μ μλ³μμ λλ€. μ΄λ λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²μμ λ§€μ° μ€μν©λλ€.
- νμ΄λ‘λ: μ€μ λ°μ΄ν° λ³κ²½ μ¬νμ
λλ€. μ μνλ§ κΈ°λ‘νλ λμ μ€μν νλμ λν΄
oldValueμnewValueλ₯Ό λͺ¨λ κΈ°λ‘νλ κ²μ΄ μ’ μ’ μ μ΅ν©λλ€. μλ₯Ό λ€μ΄ProductPriceUpdated { productId: "P1", oldPrice: 9.99, newPrice: 12.50, currency: "USD" }. - μ§κ³ λ²μ : λκ΄μ λμμ± μ μ΄μ μ μ©νκ³ μ΄λ²€νΈ μμ μ§μ μ 보μ₯νλ μ§κ³μ λν λ¨μ‘°λ‘κ² μ¦κ°νλ μ«μμ λλ€.
μν©λ³ μ΄λ²€νΈ κ°μ‘°: EntityUpdatedμ κ°μ μΌλ°μ μΈ μ΄λ²€νΈλ νΌνμμμ€. UserEmailAddressChanged, InvoiceStatusApprovedμ κ°μ΄ ꡬ체μ μΌλ‘ μ§μ νμμμ€. μ΄ λͺ
νμ±μ κ°μ¬ κ°λ₯μ±μ ν¬κ² ν₯μμν΅λλ€.
ν΅μ¬ κ°μ¬ λ‘κ·Έλ‘μμ μ΄λ²€νΈ μ μ₯μ
μ΄λ²€νΈ μ μ₯μ μ체λ κΈ°λ³Έμ μ΄κ³ λΆλ³μ κ°μ¬ λ‘κ·Έμ λλ€. λͺ¨λ λΉμ¦λμ€μ μΌλ‘ μ€μν λ³κ²½ μ¬νμ΄ μ¬κΈ°μ μΊ‘μ²λ©λλ€. ν΅μ¬ μ΄λ²€νΈμ νμν λ³λμ κ°μ¬ λ°μ΄ν°λ² μ΄μ€κ° μμ΅λλ€. μ΄λ²€νΈ μ μ₯μλ₯Ό μ νν λ λ€μ μ¬νμ κ³ λ €νμμμ€.
- νΉμ μ΄λ²€νΈ μ μ₯μ(μ: EventStoreDB): μ΄λ²€νΈ μμ±μ μν΄ νΉλ³ν μ€κ³λμμΌλ©° κ°λ ₯ν μμ μ§μ 보μ₯, ꡬλ λ° μΆκ° μ μ© μμ μ λν μ±λ₯ μ΅μ νλ₯Ό μ 곡ν©λλ€.
- κ΄κ³ν λ°μ΄ν°λ² μ΄μ€(μ:
jsonbκ° μλ PostgreSQL): κ°λ ₯ν ACID μμ±μ νμ©νμ¬ μ΄λ²€νΈλ₯Ό μ μ₯νλ λ° μ¬μ©ν μ μμ΅λλ€. 쿼리λ₯Ό μν μ μ€ν μΈλ±μ±κ³Ό μ μ¬μ μΌλ‘ ꡬλ μ μν μ¬μ©μ μ§μ λ‘μ§μ΄ νμν©λλ€. - λΆμ° λ‘κ·Έ μμ€ν (μ: Apache Kafka): λμ μ²λ¦¬λμ λΆμ° μμ€ν μ νμνλ©° λ΄κ΅¬μ±μ΄ λ°μ΄λκ³ μ λ ¬λκ³ λ΄κ²°ν¨μ± μ΄λ²€νΈ λ‘κ·Έλ₯Ό μ 곡ν©λλ€. νλ‘μ μ μ μν΄ λ€λ₯Έ λ°μ΄ν°λ² μ΄μ€μ ν¨κ» μ¬μ©λλ κ²½μ°κ° λ§μ΅λλ€.
μ νμ κ΄κ³μμ΄ μ΄λ²€νΈ μ μ₯μκ° μ΄λ²€νΈ μμλ₯Ό μ μ§νκ³ κ°λ ₯ν λ°μ΄ν° λ΄κ΅¬μ±μ μ 곡νλ©° μ§κ³ ID λ° νμμ€ν¬νλ₯Ό κΈ°λ°μΌλ‘ ν¨μ¨μ μΈ μΏΌλ¦¬λ₯Ό νμ©νλμ§ νμΈνμμμ€.
κ°μ¬ λ°μ΄ν° 쿼리 λ° λ³΄κ³
μ΄λ²€νΈ μ μ₯μκ° μ΅μ’ μ μΈ κ°μ¬ μΆμ μ 보μ νλ λμ 볡μ‘ν λ³΄κ³ μλ μ€μκ° λμ보λμ λν μ§μ μ μΈ μΏΌλ¦¬λ λΉν¨μ¨μ μΌ μ μμ΅λλ€. μ¬κΈ°μμ μ μ© κ°μ¬ μ½κΈ° λͺ¨λΈ(νλ‘μ μ )μ΄ μ€μν΄μ§λλ€.
- μ΄λ²€νΈ μ μ₯μμμ μ§μ : λ¨μΌ μ§κ³ κΈ°λ‘μ λν ν¬λ μ λΆμμ μ ν©ν©λλ€. νΉμ μ΄λ²€νΈ μ μ₯μμμ μ 곡νλ λꡬλ₯Ό μ¬μ©νλ©΄ μ΄λ²€νΈ μ€νΈλ¦Όμ κ²μν μ μλ κ²½μ°κ° λ§μ΅λλ€.
- μ μ© κ°μ¬ μ½κΈ° λͺ¨λΈ/νλ‘μ μ
: λ κ΄λ²μνκ³ λ³΅μ‘ν κ°μ¬ μꡬ μ¬νμ κ²½μ° νΉμ κ°μ¬ μ€μ¬ νλ‘μ μ
μ ꡬμΆν μ μμ΅λλ€. μ΄λ¬ν νλ‘μ μ
μ μ΄λ²€νΈ μ€νΈλ¦Όμ ꡬλ
νκ³ κ°μ¬ 쿼리μ μ΅μ νλ νμμΌλ‘ λ³νν©λλ€. μλ₯Ό λ€μ΄
UserActivityAuditνλ‘μ μ μ μ¬μ©μ κ΄λ ¨ λͺ¨λ μ΄λ²€νΈλ₯Ό κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ λ¨μΌ λΉμ κ·νλ ν μ΄λΈ λλ Elasticsearchμ μΈλ±μ€λ‘ ν΅ν©ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ μ¬μ©μ, λ μ§ λ²μ, μ΄λ²€νΈ μ ν λ° κΈ°ν κΈ°μ€λ³λ‘ λΉ λ₯Έ κ²μ λ° νν°λ§μ΄ κ°λ₯ν©λλ€. μ΄λ¬ν λΆλ¦¬(CQRS)λ κ°μ¬ λ³΄κ³ κ° μ΄μ μμ€ν μ μ±λ₯μ μν₯μ λ―ΈμΉμ§ μλλ‘ λ³΄μ₯ν©λλ€. - μκ°ν λꡬ: μ΄λ¬ν κ°μ¬ μ½κΈ° λͺ¨λΈμ Kibana(Elasticsearch νλ‘μ μ μ©), Grafana λλ μ¬μ©μ μ§μ λμ보λμ κ°μ λΉμ¦λμ€ μΈν 리μ μ€(BI) λꡬ λλ λ‘κ·Έ μ§κ³ νλ«νΌκ³Ό ν΅ν©ν©λλ€. μ΄λ κ°μ¬μ, κ·μ μ€μ λ΄λΉμ λ° λΉμ¦λμ€ μ¬μ©μ λͺ¨λμκ² μμ€ν νλμ λν μ κ·Ό κ°λ₯νκ³ μ€μκ° ν΅μ°°λ ₯μ μ 곡ν©λλ€.
μ΄λ²€νΈμμ λ―Όκ°ν λ°μ΄ν° μ²λ¦¬
μ΄λ²€νΈλ λ³Έμ§μ μΌλ‘ λ°μ΄ν°λ₯Ό μΊ‘μ²ν©λλ€. ν΄λΉ λ°μ΄ν°κ° λ―Όκ°ν κ²½μ°(μ: κ°μΈ μλ³ μ 보 - PII, κΈμ΅ μΈλΆ μ 보) νΉν κΈλ‘λ² κ°μΈ μ 보 λ³΄νΈ κ·μ μ κ³ λ €νμ¬ νΉλ³ν μ£Όμλ₯Ό κΈ°μΈμ¬μΌ ν©λλ€.
- μ μ₯ λ° μ μ‘ μ μνΈν: νμ€ λ³΄μ κ΄νμ΄ μ μ©λ©λλ€. μ΄λ²€νΈ μ μ₯μμ ν΅μ μ±λμ΄ μνΈνλμλμ§ νμΈνμμμ€.
- ν ν°ν λλ κ°λͺ μ²λ¦¬: λ§€μ° λ―Όκ°ν νλ(μ: μ μ© μΉ΄λ λ²νΈ, κ΅λ―Ό μλ³ λ²νΈ)μ κ²½μ° μμ λ°μ΄ν° λμ μ΄λ²€νΈμ ν ν° λλ κ°λͺ μ μ μ₯ν©λλ€. μ€μ λ―Όκ°ν λ°μ΄ν°λ μ μ ν κΆνμ΄ μλ κ²½μ°μλ§ μ‘μΈμ€ν μ μλ λ³λμ κ³ λλ‘ λ³΄νΈλ λ°μ΄ν° μ μ₯μμ μμ£Όν©λλ€. μ΄λ κ² νλ©΄ μ΄λ²€νΈ μ€νΈλ¦Ό λ΄μμ λ―Όκ°ν λ°μ΄ν°μ λ ΈμΆμ΄ μ΅μνλ©λλ€.
- λ°μ΄ν° μ΅μν: μ΄λ²€νΈμ μ격νκ² νμν λ°μ΄ν°λ§ ν¬ν¨ν©λλ€. λ°μ΄ν°λ₯Ό "λ¬΄μ¨ μΌμ΄ μΌμ΄λ¬λμ§" μ΄ν΄νλ λ° νμνμ§ μμ κ²½μ° ν¬ν¨νμ§ λ§μμμ€.
- λ°μ΄ν° 보쑴 μ μ± : μ΄λ²€νΈ μ€νΈλ¦Όμ λΆλ³μ΄μ§λ§ μ¬μ ν 보쑴 μ μ± μ μ μ©μ λ°μ μ μλ λ°μ΄ν°λ₯Ό ν¬ν¨ν©λλ€. μ΄λ²€νΈ μ체λ κ±°μ μμ λμ§ μμ§λ§ νμλ νμ¬ μν λ°μ΄ν° λ° κ°μ¬ νλ‘μ μ μ νΉμ κΈ°κ° νμ μ κ±°νκ±°λ μ΅λͺ νν΄μΌ ν μ μμ΅λλ€.
λ°μ΄ν° λ¬΄κ²°μ± λ° λΆμΈ λ°©μ§ λ³΄μ₯
μ΄λ²€νΈ μ μ₯μμ λΆλ³μ±μ λ°μ΄ν° 무결μ±μ μν κΈ°λ³Έ λ©μ»€λμ¦μ λλ€. λΆμΈ λ°©μ§ κΈ°λ₯μ λμ± κ°ννκ³ λ¬΄κ²°μ±μ νμΈνλ €λ©΄:
- λμ§νΈ μλͺ λ° ν΄μ±: μ΄λ²€νΈ μ€νΈλ¦Ό λλ κ°λ³ μ΄λ²€νΈμ μνΈν ν΄μ±μ ꡬνν©λλ€. κ° μ΄λ²€νΈλ μ΄μ μ΄λ²€νΈμ ν΄μλ₯Ό ν¬ν¨νμ¬ λ³΄κ΄ μ²΄μΈμ λ§λ€ μ μμ΅λλ€. μ΄λ κ² νλ©΄ λ³μ‘°κ° ν΄μ 체μΈμ λμ΄ μ¦μ κ°μ§ν μ μμ΅λλ€. κ³΅κ° ν€ μνΈνλ₯Ό μ¬μ©νλ λμ§νΈ μλͺ μ μ΄λ²€νΈμ μΆμ²μ 무결μ±μ λμ± μ¦λͺ ν μ μμ΅λλ€.
- λΈλ‘체μΈ/λΆμ° μμ₯ κΈ°μ (DLT): μ λ’°ν μ μλ λΉμ¬μ κ°μ κ·Ήλμ μ λ’° μμ€κ³Ό κ²μ¦ κ°λ₯ν λΆλ³μ±μ μν΄ μΌλΆ μ‘°μ§μμλ μ΄λ²€νΈ ν΄μ(λλ μ΄λ²€νΈ μ체)λ₯Ό κ°μΈ λλ 컨μμμ λΈλ‘체μΈμ μ μ₯νλ κ²μ λͺ¨μν©λλ€. λ κ³ κΈμ€λ½κ³ μ μ¬μ μΌλ‘ 볡μ‘ν μ¬μ© μ¬λ‘μ΄μ§λ§ κ°μ¬ μΆμ μ λν λΉκ΅ν μ μλ μμ€μ λ³μ‘° λ°©μ§ λ° ν¬λͺ μ±μ μ 곡ν©λλ€.
κΈλ‘λ² λ°°ν¬λ₯Ό μν κ³ κΈ κ³ λ € μ¬ν
κ΅μ κ΅κ²½ μ λ°μ κ±Έμ³ κ°λ ₯ν κ°μ¬ μΆμ κΈ°λ₯μ κ°μΆ μ΄λ²€νΈ μμ€ μμ€ν μ λ°°ν¬νλ©΄ κ³ μ ν λ¬Έμ κ° λ°μν©λλ€.
λ°μ΄ν° λ³΄κ΄ λ° μ£ΌκΆ
κΈλ‘λ² μ‘°μ§μ κ°μ₯ μ€μν κ΄μ¬μ¬ μ€ νλλ λ°μ΄ν°κ° 물리μ μΌλ‘ μ μ₯λλ λ°μ΄ν° 보κ΄κ³Ό ν΄λΉ λ°μ΄ν°κ° μ μ©λλ λ²μ κ΄ν κΆμΈ λ°μ΄ν° μ£ΌκΆμ λλ€. μ΄λ²€νΈλ μ μμ λ°μ΄ν°λ₯Ό ν¬ν¨νλ©° μ΄λ²€νΈκ° μμ£Όνλ μμΉκ° μ€μν©λλ€. μλ₯Ό λ€μ΄:
- μ§λ¦¬μ 볡μ : μ¬ν΄ 볡ꡬ λ° μ±λ₯μ μν΄ μ΄λ²€νΈ μ μ₯μλ₯Ό μ§λ¦¬μ μΌλ‘ 볡μ ν μ μμ§λ§ ν μ§μμ λ―Όκ°ν λ°μ΄ν°κ° μ μ ν μ μ΄ μμ΄ λ€λ₯Έ λ²μ νλ μμν¬λ₯Ό κ°μ§ κ΄ν ꡬμμ λΆμ£Όμνκ² μμ£Όνμ§ μλλ‘ μ£Όμν΄μΌ ν©λλ€.
- μ§μ μ΄λ²€νΈ μ μ₯μ: λ§€μ° λ―Όκ°ν λ°μ΄ν° λλ μ격ν κ·μ μ€μ μμμ κ²½μ° νΉμ κ΅κ° λλ κ²½μ λΈλ‘(μ: EU)μμ λ°μνλ λ°μ΄ν°κ° ν΄λΉ μ§λ¦¬μ κ²½κ³ λ΄μ μ μ§λλλ‘ λ³λμ μ§μ μ΄λ²€νΈ μ μ₯μ(λ° κ΄λ ¨ νλ‘μ μ )λ₯Ό μ μ§ν΄μΌ ν μ μμ΅λλ€. μ΄λ μν€ν μ² λ³΅μ‘μ±μ μΌκΈ°ν μ μμ§λ§ κ·μ μ€μλ₯Ό 보μ₯ν©λλ€.
- μ§μ/κ³ κ°λ³ μ€λ©: κ° μ΄λ²€νΈ μ€νΈλ¦Ό(λ° κ°μ¬ μΆμ )μ΄ μ μ₯λλ μμΉλ₯Ό μ μ΄ν μ μλλ‘ μ§μ λλ κ³ κ° μλ³μλ‘ μ§κ³λ₯Ό μ€λ©νλλ‘ μμ€ν μ μ€κ³ν©λλ€.
μκ°λ λ° νμ§ν
μ μΈκ³ μ¬μ©μμ κ²½μ° κ°μ¬ μΆμ μ μΌκ΄λ μκ° μ μ§κ° κ°μ₯ μ€μν©λλ€. νμ νμμ€ν¬νλ₯Ό UTCλ‘ μ μ₯ν©λλ€. μ¬μ©μ λλ κ°μ¬μμκ² κ°μ¬ μ 보λ₯Ό νμν λ UTC νμμ€ν¬νλ₯Ό κ΄λ ¨ νμ§ μκ°λλ‘ λ³νν©λλ€. μ΄λ κ² νλ €λ©΄ μ¬μ©μκ° μ νΈνλ μκ°λλ₯Ό μ μ₯νκ±°λ ν΄λΌμ΄μΈνΈμμ κ°μ§ν΄μΌ ν©λλ€. μ΄λ²€νΈ νμ΄λ‘λ μ체μ νμ§νλ μ€λͺ μ΄λ μ΄λ¦μ΄ ν¬ν¨λ μλ μμΌλ©°, κ°μ¬ λͺ©μ μΌλ‘ μΈμ΄ κ° μΌκ΄μ±μ΄ νμν κ²½μ° νλ‘μ μ μμ μ μ€νκ² μ²λ¦¬ν΄μΌ ν μ μμ΅λλ€.
νμ₯μ± λ° μ±λ₯
μ΄λ²€νΈ μ μ₯μλ μ°κΈ° μμ£Όμ μΆκ° μ μ© μμ μ κ³ λλ‘ μ΅μ νλμ΄ κ°μ¬ λ°μ΄ν° μΊ‘μ²μ λ³Έμ§μ μΌλ‘ νμ₯ κ°λ₯ν©λλ€. κ·Έλ¬λ μμ€ν μ΄ μ±μ₯ν¨μ λ°λΌ λ€μκ³Ό κ°μ κ³ λ € μ¬νμ΄ μμ΅λλ€.
- μνμ νμ₯: μ νν μ΄λ²€νΈ μ μ₯μ λ° νλ‘μ μ λ©μ»€λμ¦μ΄ μ¦κ°νλ μ΄λ²€νΈ λ³Όλ₯¨μ μ²λ¦¬νκΈ° μν΄ μνμ μΌλ‘ νμ₯ν μ μλμ§ νμΈνμμμ€.
- μ½κΈ° λͺ¨λΈ μ±λ₯: κ°μ¬ λ³΄κ³ μκ° λμ± λ³΅μ‘ν΄μ§μ λ°λΌ 쿼리 μ±λ₯μ μν΄ μ½κΈ° λͺ¨λΈ(νλ‘μ μ )μ μ΅μ νν©λλ€. μ¬κΈ°μλ λΉμ κ·ν, μ κ·Ήμ μΈ μΈλ±μ± λλ Elasticsearchμ κ°μ νΉμ κ²μ κΈ°μ μ¬μ©μ΄ ν¬ν¨λ μ μμ΅λλ€.
- μ΄λ²€νΈ μ€νΈλ¦Ό μμΆ: λ§μ μμ μ΄λ²€νΈμ κ²½μ° μ€ν λ¦¬μ§ λΉμ©μ κ΄λ¦¬νκ³ μ½κΈ° μ±λ₯μ ν₯μμν€κΈ° μν΄ μ μ₯ μ μ΄λ²€νΈμ λν μμΆ κΈ°μ μ κ³ λ €νμμμ€.
κ΄ν ꡬμ μ λ°μ κ·μ μ€μ
κΈλ‘λ² λ°μ΄ν° κ°μΈ μ 보 λ³΄νΈ λ° κ°μ¬ κ·μ μ λ€μν νκ²½μ νμνλ κ²μ 볡μ‘ν©λλ€. μ΄λ²€νΈ μμ±μ νλ₯ν κΈ°λ°μ μ 곡νμ§λ§ κ·μ μ€μλ₯Ό μλμΌλ‘ 보μ₯νμ§λ μμ΅λλ€. μ€μν΄μΌ ν μ£Όμ μμΉ:
- λ°μ΄ν° μ΅μν: μ΄λ²€νΈμλ λΉμ¦λμ€ κΈ°λ₯ λ° κ°μ¬ μΆμ μ μ격νκ² νμν λ°μ΄ν°λ§ ν¬ν¨λμ΄μΌ ν©λλ€.
- λͺ©μ μ ν: λ°μ΄ν°(λ° μ΄λ²€νΈ)κ° μμ§λκ³ μ μ₯λλ λͺ©μ μ λͺ ννκ² μ μνκ³ λ¬Έμνν©λλ€.
- ν¬λͺ μ±: μ¬μ©μ λ° κ°μ¬μμκ² μμ§λλ λ°μ΄ν°, μ¬μ© λ°©λ² λ° λ³΄κ΄ κΈ°κ°μ λͺ ννκ² μ€λͺ ν μ μμ΄μΌ ν©λλ€.
- μ¬μ©μ κΆλ¦¬: GDPRκ³Ό κ°μ κ·μ μ κ²½μ° μ΄λ²€νΈ μμ±μ μ¬μ©μ κΆλ¦¬ μμ²(μ: μ‘μΈμ€ κΆν, μμ κΆν)μ μλ΅νλ κ²μ μ©μ΄νκ² ν©λλ€. "μνμ§ κΆλ¦¬"μλ νΉλ³ν μ²λ¦¬κ° νμν©λλ€(μλμμ μ€λͺ ).
- λ¬Έμν: μ΄λ²€νΈ λͺ¨λΈ, λ°μ΄ν° νλ¦ λ° μ΄λ²€νΈ μμ€ μμ€ν μ΄ νΉμ κ·μ μ€μ μꡬ μ¬νμ ν΄κ²°νλ λ°©λ²μ λν μ² μ ν λ¬Έμλ₯Ό μ μ§ν©λλ€.
μΌλ°μ μΈ ν¨μ λ° μ΄λ₯Ό νΌνλ λ°©λ²
μ΄λ²€νΈ μμ±μ κ°μ¬ μΆμ μ λ§λν μ΄μ μ μ 곡νμ§λ§ κ°λ°μμ μ€κ³μλ μ μ¬μ μΈ ν¨μ μ μκ³ μμ΄μΌ ν©λλ€.
"λΉν" μ΄λ²€νΈ
ν¨μ : κ°μ¬ λͺ©μ μΌλ‘ λ μ μ©νλλ‘ μΆ©λΆν 컨ν
μ€νΈλ λ°μ΄ν°κ° μλ μ΄λ²€νΈ μ€κ³. μλ₯Ό λ€μ΄ μ΄λ€ νλκ°, λκ°, μ λ³κ²½λμλμ§ μμΈν μ€λͺ
νμ§ μκ³ λ¨μν UserUpdatedλΌκ³ λͺ
λͺ
λ μ΄λ²€νΈμ
λλ€.
ν΄κ²°μ± : "λ¬΄μ¨ μΌμ΄ μΌμ΄λ¬λμ§"λ₯Ό ν¬κ΄μ μΌλ‘ μΊ‘μ²νλλ‘ μ΄λ²€νΈλ₯Ό μ€κ³ν©λλ€. κ° μ΄λ²€νΈλ μμ νκ³ λΆλ³μ μ¬μ€μ΄μ΄μΌ ν©λλ€. κ΄λ ¨ νμ΄λ‘λ λ°μ΄ν°(μ μ ν κ²½μ° μ΄μ λ° μ κ°), νμμ μ 보(μ¬μ©μ ID, IP) λ° νμμ€ν¬νλ₯Ό λͺ¨λ ν¬ν¨ν©λλ€. κ° μ΄λ²€νΈλ₯Ό νΉμ λΉμ¦λμ€ λ³κ²½ μ¬νμ λν λ―Έλ λ³΄κ³ μλ‘ μκ°νμμμ€.
κ³Όλν μΈλΆμ± λ λΆμ‘±ν μΈλΆμ±
ν¨μ : λͺ¨λ μ¬μν κΈ°μ μ λ³κ²½ μ¬νμ λ‘κΉ
(κ³Όλν μΈλΆμ±)νλ©΄ μ΄λ²€νΈ μ μ₯μκ° μλλκ³ κ°μ¬ μΆμ μ΄ μλλ½κ³ ꡬ문 λΆμνκΈ° μ΄λ €μμ§ μ μμ΅λλ€. λ°λλ‘ νΉμ μΈλΆ μ λ³΄κ° μλ OrderChangedμ κ°μ μ΄λ²€νΈ(λΆμ‘±ν μΈλΆμ±)λ κ°μ¬ λΆμ‘±μ
λλ€.
ν΄κ²°μ± : μ€μν λΉμ¦λμ€ λ³κ²½ μ¬νμ΄λ μ¬μ€μ λνλ΄λ μ΄λ²€νΈλ₯Ό μν΄ λ Έλ ₯νμμμ€. λΉμ¦λμ€ λλ©μΈμ μλ―Έκ° μλ κ²μ μ§μ€νμμμ€. μ’μ κ²½ν λ²μΉ: λΉμ¦λμ€ μ¬μ©μκ° μ΄ λ³κ²½ μ¬νμ κ΄μ¬μ κ°λλ€λ©΄ μ΄λ²€νΈμ μ ν©ν νλ³΄μΌ κ°λ₯μ±μ΄ λμ΅λλ€. κΈ°μ μΈνλΌ λ‘κ·Έλ μΌλ°μ μΌλ‘ μ΄λ²€νΈ μ μ₯μκ° μλ λ³λμ λ‘κΉ μμ€ν μμ μ²λ¦¬ν΄μΌ ν©λλ€.
μ΄λ²€νΈ λ²μ κ΄λ¦¬ λ¬Έμ
ν¨μ : μκ°μ΄ μ§λ¨μ λ°λΌ μ΄λ²€νΈ μ€ν€λ§κ° μ§νν©λλ€. μ΄μ μ΄λ²€νΈλ μ μ΄λ²€νΈμ λ€λ₯Έ ꡬ쑰λ₯Ό κ°μ§λ―λ‘ μ΄λ²€νΈ μ¬μ λ° νλ‘μ μ ꡬμΆμ΄ 볡μ‘ν΄μ§ μ μμ΅λλ€.
ν΄κ²°μ± : μ€ν€λ§ μ§νλ₯Ό κ³ννμμμ€. μ λ΅μλ λ€μμ΄ ν¬ν¨λ©λλ€.
- νμ νΈνμ±: νμ μ΄λ²€νΈ μ€ν€λ§μ μΆκ°μ μΈ λ³κ²½ μ¬νμ μ μ©νμμμ€. νλ μ΄λ¦μ λ°κΎΈκ±°λ μ κ±°νμ§ λ§μμμ€.
- μ΄λ²€νΈ μ μΊμ€ν°: μ¬μ λλ νλ‘μ μ κ΅¬μΆ μ€μ μ΄μ μ΄λ²€νΈ λ²μ μ μ μ΄λ²€νΈ λ²μ μΌλ‘ λ³ννλ λ©μ»€λμ¦(μ μΊμ€ν°)μ ꡬνν©λλ€.
- μ€ν€λ§ λ²μ κ΄λ¦¬: μ΄λ²€νΈ λ©νλ°μ΄ν°μ λ²μ λ²νΈλ₯Ό ν¬ν¨νμ¬ μλΉμκ° μμν μ€ν€λ§ λ²μ μ μ μ μλλ‘ ν©λλ€.
μ΄λ²€νΈ μμ±μμ "μνμ§ κΆλ¦¬"(RTBF)
ν¨μ : μ΄λ²€νΈμ λΆλ³μ±μ μμ² μ κ°μΈ λ°μ΄ν° μμ λ₯Ό μ무ννλ GDPRμ "μνμ§ κΆλ¦¬"μ κ°μ κ·μ κ³Ό μΆ©λν©λλ€.
ν΄κ²°μ± : μ΄κ²μ 볡μ‘ν μμμ΄λ©° ν΄μμ΄ λ€λ¦ λλ€. μ£Όμ μ λ΅μλ λ€μμ΄ ν¬ν¨λ©λλ€.
- κ°λͺ μ²λ¦¬/μ΅λͺ ν: μ΄λ²€νΈλ₯Ό μ€μ λ‘ μμ νλ λμ μ΄λ²€νΈ λ΄μ λ―Όκ°ν λ°μ΄ν°λ₯Ό κ°λͺ μ²λ¦¬νκ±°λ μ΅λͺ νν©λλ€. μ¦, μ§μ μλ³μ(μ: μ¬μ©μ μ 체 μ΄λ¦, μ΄λ©μΌ)λ₯Ό λλ릴 μ μλ μλ³ λΆκ°λ₯ν ν ν°μΌλ‘ λ°κΏλλ€. μλ μ΄λ²€νΈλ 보쑴λμ§λ§ κ°μΈ λ°μ΄ν°λ μ΄ν΄ν μ μκ² λ©λλ€.
- ν€ μμ λ₯Ό ν΅ν μνΈν: μ΄λ²€νΈ λ΄μ λ―Όκ°ν νλλ₯Ό μνΈνν©λλ€. μ¬μ©μκ° μμ λ₯Ό μμ²νλ©΄ ν΄λΉ λ°μ΄ν°μ λν μνΈν ν€λ₯Ό νκΈ°νμμμ€. μ΄λ κ² νλ©΄ μνΈνλ λ°μ΄ν°λ₯Ό μ½μ μ μκ² λ©λλ€. μ΄κ²μ λ Όλ¦¬μ μμ μ ν ννμ λλ€.
- νλ‘μ μ μμ€ μμ : RTBFκ° μ’ μ’ λΆλ³ μ΄λ²€νΈ λ‘κ·Έ μμ²΄κ° μλλΌ λ°μ΄ν°μ νμ¬ μν λ° νμλ 보기(μ½κΈ° λͺ¨λΈ/νλ‘μ μ )μ μ μ©λλ€λ κ²μ μΈμνμμμ€. "μ¬μ©μ μκΈ°" μ΄λ²€νΈκ° μ²λ¦¬λ λ μ¬μ©μ λ°μ΄ν°λ₯Ό μ κ±°νκ±°λ μ΅λͺ ννλλ‘ νλ‘μ μ μ μ€κ³ν μ μμ΅λλ€. μ΄λ²€νΈ μ€νΈλ¦Όμ κ°μ¬λ₯Ό μν΄ κ·Έλλ‘ μ μ§λμ§λ§ μ΄μ μμ€ν μ ν΅ν΄ κ°μΈ λ°μ΄ν°μ λ μ΄μ μ‘μΈμ€ν μ μμ΅λλ€.
- μ΄λ²€νΈ μ€νΈλ¦Ό μμ : λ²λ₯ μμ νμ©νκ³ κ°λ₯ν λ§€μ° κ΅¬μ²΄μ μ΄κ³ λλ¬Έ κ²½μ°μ μ 체 μ§κ³μ μ΄λ²€νΈ μ€νΈλ¦Όμ μ κ±°ν μ μμ΅λλ€. κ·Έλ¬λ μ΄λ μμ¬μ λ¬΄κ²°μ± λ° νμλ μμ€ν μ λ―ΈμΉλ μν₯μΌλ‘ μΈν΄ μΌλ°μ μΌλ‘ κΆμ₯λμ§ μμ΅λλ€.
νΉν λ€μν κΈλ‘λ² κ΄ν ꡬμμμ ν΄μμ΄ λ€λ₯Ό μ μμΌλ―λ‘ μ΄λ²€νΈ μμ€ μν€ν μ² λ΄μμ RTBF μ λ΅μ ꡬνν λλ λ²λ₯ μ λ¬Έκ°μ μλ΄νλ κ²μ΄ μ€μν©λλ€.
λͺ¨λ μ΄λ²€νΈ μ¬μ μ±λ₯
ν¨μ : κΈ°λ‘μ΄ λ§€μ° κΈ΄ μ§κ³μ κ²½μ° λͺ¨λ μ΄λ²€νΈλ₯Ό λ€μ μ¬μνμ¬ ν΄λΉ μνλ₯Ό μ¬κ΅¬μ±νλ λ° μκ°μ΄ μ€λ 걸릴 μ μμ΅λλ€.
ν΄κ²°μ± :
- μ€λ μ·: μ§κ³ μνμ μ€λ μ·μ μ£ΌκΈ°μ μΌλ‘ μ°μ΄ μ μ₯ν©λλ€. μ§κ³λ₯Ό μ¬κ΅¬μ±ν λ μ΅μ μ€λ μ·μ λ‘λν λ€μ ν΄λΉ μ€λ μ· μ΄νμ λ°μν μ΄λ²€νΈλ§ λ€μ μ¬μν©λλ€.
- μ΅μ νλ μ½κΈ° λͺ¨λΈ: μΌλ°μ μΈ μΏΌλ¦¬ λ° κ°μ¬ λ³΄κ³ μ κ²½μ° μ£Όλ¬Έν μ΄λ²€νΈλ₯Ό λ€μ μ¬μνλ λμ μ΅μ νλ μ½κΈ° λͺ¨λΈ(νλ‘μ μ )μ ν¬κ² μμ‘΄ν©λλ€. μ΄λ¬ν μ½κΈ° λͺ¨λΈμ μ΄λ―Έ 미리 κ³μ°λμ΄ μΏΌλ¦¬ν μ μμ΅λλ€.
μ΄λ²€νΈ μμ±μ ν΅ν κ°μ¬μ λ―Έλ
λΉμ¦λμ€κ° λμ± λ³΅μ‘ν΄μ§κ³ κ·μ κ° λμ± μ격ν΄μ§μ λ°λΌ μ κ΅ν κ°μ¬ κΈ°λ₯μ νμμ±λ§ μ»€μ§ κ²μ λλ€. μ΄λ²€νΈ μμ±μ μ΄λ¬ν μ§ννλ μꡬ μ¬νμ ν΄κ²°νλ λ° μλ²½νκ² μ ν©ν©λλ€.
- μ΄μ κ°μ§λ₯Ό μν AI/ML: μ΄λ²€νΈ μ€νΈλ¦Όμ νλΆνκ³ κ΅¬μ‘°νλκ³ μ°λμμ μΈ νΉμ±μ μΈκ³΅ μ§λ₯ λ° κΈ°κ³ νμ΅ μκ³ λ¦¬μ¦μ μ΄μμ μΈ μ λ ₯μ΄ λ©λλ€. μ΄λ¬ν μκ³ λ¦¬μ¦μ μ€μκ°μΌλ‘ νΉμ΄ν ν¨ν΄, μμ¬μ€λ¬μ΄ νλ λλ μ μ¬μ μΈ μ¬κΈ°λ₯Ό νμ§νλλ‘ νμ΅λμ΄ κ°μ¬λ₯Ό λ°μμ μμ μ¬μ μλ°©μ μΌλ‘ μ νν μ μμ΅λλ€.
- DLTμμ ν₯μλ ν΅ν©: μ΄λ²€νΈ μμ±κ³Ό λΆμ° μμ₯ κΈ°μ (DLT)μ΄ κ³΅μ νλ λΆλ³μ± λ° κ²μ¦ κ°λ₯ν κΈ°λ‘μ μμΉμ κ°λ ₯ν μλμ§ ν¨κ³Όλ₯Ό μ μν©λλ€. ν₯ν μμ€ν μ νΉν λ€μκ° κ°μ¬ μλ리μ€μμ μ€μν μ΄λ²€νΈ μ€νΈλ¦Όμ λν μΆκ° μ λ’° λ° ν¬λͺ μ± κ³μΈ΅μ μ 곡νκΈ° μν΄ DLTλ₯Ό μ¬μ©ν μ μμ΅λλ€.
- μ€μκ° μ΄μ μΈν 리μ μ€: μ΄λ²€νΈ μ€νΈλ¦Όμ μ€μκ°μΌλ‘ μ²λ¦¬ν¨μΌλ‘μ¨ μ‘°μ§μ λΉμ¦λμ€ μ΄μ, μ¬μ©μ νλ λ° μμ€ν μνμ λν μ¦κ°μ μΈ ν΅μ°°λ ₯μ μ»μ μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ κΈ°μ‘΄μ μΌκ΄ μ²λ¦¬λ κ°μ¬ λ³΄κ³ μκ° μ 곡ν μ μλ κ²λ³΄λ€ ν¨μ¬ λ°μ΄λλ μ¦κ°μ μΈ μ‘°μ λ° λμμ΄ κ°λ₯ν©λλ€.
- "λ‘κΉ "μμ "μ΄λ²€νΈ"λ‘μ μ ν: μ΄λ²€νΈ μ€νΈλ¦Όμ΄ λ μ΄μ μμ€ν λ‘κ·Έμλ§ μ¬μ©λλ κ²μ΄ μλλΌ λΉμ¦λμ€ μ΄μμ μ£Όμ μ§μ€ μμ€κ° λλ κ·Όλ³Έμ μΈ μ νμ λͺ©κ²©νκ³ μμ΅λλ€. μ΄λ μ‘°μ§μ΄ κ³Όκ±° λ°μ΄ν°λ₯Ό μΈμνκ³ νμ©νλ λ°©μμ μ¬μ μνμ¬ κ°μ¬ μΆμ μ λ¨μν κ·μ μ€μ μ€λ²ν€λμμ μ λ΅μ μμ°μΌλ‘ μ νν©λλ€.
κ²°λ‘
κΈλ‘λ² κ·μ λ₯Ό λ°κ³ λ°μ΄ν° μ§μ½μ μΈ νκ²½μμ μ΄μλλ μ‘°μ§μ κ²½μ° μ΄λ²€νΈ μμ±μ κ°μ¬ μΆμ ꡬνμ λν μ€λλ ₯ μκ³ μ°μν μ κ·Ό λ°©μμ μ 곡ν©λλ€. λΆλ³μ±, μΈλΆμ μΈ μ»¨ν μ€νΈ, μ°λμ λ° κ΄μ¬μ¬μ κ³ μ ν λΆλ¦¬λΌλ ν΅μ¬ μμΉμ κΈ°μ‘΄ λ‘κΉ λ©μ»€λμ¦μ΄ λ¨μν μΌμΉμν¬ μ μλ κΈ°λ°μ μ 곡ν©λλ€.
μ΄λ²€νΈλ₯Ό μ μ€νκ² μ€κ³νκ³ μΏΌλ¦¬μ μ μ© μ½κΈ° λͺ¨λΈμ νμ©νκ³ λ―Όκ°ν λ°μ΄ν° λ° κΈλ‘λ² κ·μ μ€μμ 볡μ‘μ±μ μ μ€νκ² νμν¨μΌλ‘μ¨ κ°μ¬ μΆμ μ νμν λΆλ΄μμ κ°λ ₯ν μ λ΅μ μμ°μΌλ‘ μ νν μ μμ΅λλ€. μ΄λ²€νΈ μμ±μ λ°μν μΌμ κΈ°λ‘νλ κ²μ΄ μλλΌ μμ€ν μλͺ μ λν λ³κ²½ν μ μκ³ μ¬κ΅¬μ± κ°λ₯ν κΈ°λ‘μ λ§λ€μ΄ νλ λμ§νΈ μΈκ³μ μꡬ μ¬νμ νμνλ λ° μ€μν λΉκ΅ν μ μλ ν¬λͺ μ±, μ± μ λ° ν΅μ°°λ ₯μ μ 곡ν©λλ€.